package controllers;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import models.Frequencia;
import models.Usuario;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import play.mvc.Security;
import dao.DAOFrequencia;
import dao.DAOUsuario;

@Security.Authenticated(Seguranca.class)
public class FrequenciaControle extends Controller {

        private static Form<Frequencia> formFrequencia = new Form<Frequencia>(Frequencia.class);
          
    public static Result index() {
        return listarView("", "");
    }
        
        public static Result cadastrarView(){
                
                DAOUsuario dao = new DAOUsuario();
                try {
                        Set<Usuario> alunos = dao.select();
                        //return ok(views.html.frequencia.cadastrar.render(alunos));
                        return ok(views.html.frequencia.cadastrar.render());
                } catch (Exception e) {
                        return listarView("alert-error", e.getMessage());
                }

        }
        
        public static Result editarView(int id){
                DAOFrequencia dao = new DAOFrequencia();
                DAOUsuario daoU = new DAOUsuario();
                try{
                        Set<Usuario> alunos = daoU.select();
                
                        Frequencia frequencia = new Frequencia();
                        frequencia = dao.select(id);
                        return ok(views.html.frequencia.editar.render(frequencia));
                }catch(Exception e){
                        return listarView("alert-error", e.getMessage());
                }
        }
        
        public static Result listarView(String tipoAlerta, String mensagem){
                DAOFrequencia dao = new DAOFrequencia();
                try {
                        return ok(views.html.frequencia.listar.render(dao.select(), tipoAlerta, mensagem));
                } catch (Exception e) {
                        return ok(views.html.frequencia.listar.render(null, tipoAlerta, e.getMessage() +"<br/>"+ mensagem));
                }
        }
        
        public static Result cadastrar(){
                Form<Frequencia> novoFrequencia = formFrequencia.bindFromRequest();
                Frequencia frequencia = novoFrequencia.get();

                try{
                        frequencia.cadastrar();
                        return listarView("alert-success", "Frequencia cadastrada com sucesso.");
                } catch (Exception e) {
                        return listarView("alert-error", e.getMessage());
                }
        }
        
        public static Result editar(){
                Form<Frequencia> novoFrequencia = formFrequencia.bindFromRequest();
                Frequencia frequencia = novoFrequencia.get();
                
                try{
                        frequencia.editar();
                        return listarView("alert-success", "Frequencia editada com sucesso.");
                } catch (Exception e) {
                        return listarView("alert-error", e.getMessage());
                }
                
        }
        
        public static Result remover(){
                Form<Frequencia> novoFrequencia = formFrequencia.bindFromRequest();
                Frequencia frequencia = novoFrequencia.get();
                try{
                        frequencia.remover();
                        return listarView("alert-success", "Frequencia removida com sucesso.");
                }catch(Exception e){
                        return listarView("alert-error", e.getMessage());
                }
        }
        
}
